<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Access-Control-Allow-Origin" content="*" />
        <title></title>
    </head>
    <body>
        <script src="./mySetTimeOut.js"></script>
        <button onclick="">计时</button>
        <script>
            let func1 = function(){console.log("hi");}
            let func2 = function(){mySetTimeOut(func1, 5000);}
            function doDelay(time){
                return new Promise((resolve, reject) => {
                    setTimeout(() => {
                        let now = +new Date();
                        if(now % 2 === 1) resolve("success" + now);
                        else reject("error" + now);
                    }, time)
                })
            }
            // const promise = doDelay(2000);
            // promise.then((value) => {
            //     console.log("success value" + value);
            // })
            // promise.catch((error) =>{
            //     console.log("error value" + error);
            // })

            // function promiseAjax(url){
            //     return new Promise((resolve, reject) => {
            //         let xhr = new XMLHttpRequest();

            //         xhr.onreadystatechange = () => {
            //             if(xhr.readyState !== 4) return;
            //             const {status, response} = xhr;
            //             if(status >= 200 && status< 300){
            //                 resolve(JSON.parse(response))
            //             }
            //             else{
            //                 reject(new Error("请求失败" + status));
            //             }
            //         }

                        // xhr.open("GET", url, true);
                        // xhr.send();
            //     })


            // }

            // promiseAjax('https://www.baidu.com/')
            // .then((res) => {
            //     console.log(res);
            // })
            // .catch((error) => {
            //     console.log(error);
            // })
       

            function promiseAjaxTime(url){
                return new Promise((resolve, reject) => {
                    let xhr = new XMLHttpRequest();

                    // xhr.onreadystatechange = () => {
                    //     //if(xhr.readyState !== 4) return;
                    //     console.log("in onreadystatechange")
                    //     const {status, response} = xhr;
                    //     if(status >= 200 && status< 300){
                    //         resolve(JSON.parse(response))
                    //     }
                    //     else{
                    //         reject(new Error("请求失败" + status));
                    //     }
                    // }
                    xhr.open("GET", url);
                    xhr.send();
                    setTimeout(() => {
                        console.log("in timeout");
                        const {status, response} = xhr;
                        if(status >= 200 && status< 300){
                            resolve(JSON.parse(response))
                        }
                        else{
                            reject(new Error("请求失败" + status));
                        }
                    }, 4000)

                })
            }

            promiseAjaxTime('https://www.baidu.com/')
            .then((res) => {
                console.log(res);
            })
            .catch((error) => {
                console.log(error);
            })
        </script>
    </body>
</html>
